import pandas as pd
import numpy as np
# 取消全局证书验证
import ssl

ssl.create_default_https_context = ssl._create_unverified_context

# 缺失值处理
# 1.
# 缺失值为NAN
# 判断数据中是否包含NAN：pd.isnull(df)
# pd.isnull(df["column"])
# pd.null(df)
# 删除存在缺失值的数据（适用于缺失数量少）：dp.dropna()
# 将缺失值nan替换（适用于确实数量多）：dp.fillna(dp["column"].mean(), inplace=True)
# inplace = True代表会修改原数据，inplace = False代表会返回修改后的新对象
# 2.
# 缺失值不为NAN，例如 "?"
# 替换为NAN，进而再做处理
# df.replace(to_replace="?", value=np.nan)


df = pd.read_csv("IMDB-Movie-Data.csv")
print(np.any(pd.isnull(df)))  # True代表有空值

# 直接删除
df1 = df.dropna()
print(np.all(pd.notnull(df1)))  # True代表没有nan

# 用中位数进行替换
for i in df.columns:
    if np.any(pd.isnull(df[i])) == True:
        print(i)
        df[i].fillna(df[i].mean(), inplace=True)  # 原地替换
print(np.all(pd.notnull(df)))  # True代表没有nan

# 非nan处理
wis = pd.read_csv(
    "https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data")
wis = wis.replace(to_replace="?", value=np.nan)
print(np.any(pd.isnull(wis)))  # True代表有空值
